/***********************************************************************************************************************
 * ############################################# Application AdewebLite #############################################
 * AdewebLite Android est une application permettant de consulter des emplois du temps fournis par l'université UHP
 * avec ou sans connexion internet (informations gardées en mémoire à chaque synchronisation). Et utilisant la web
 * API ADE pour collecter les données.
 * @author Andrianjafintrimo Victor, Zanette Sébastien
 * 
 * Basée sur l'application du même nom, utilisant le flux RSS (données à traiter), de :
 * @author Schnell Michaël, Zanette Sébastien
 * **********************************************************************************************************************
 */

package ade.prime.activity.parameters;

import ade.prime.activity.CreateSchedule;
import ade.prime.activity.R;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

/**
 * Champ 'Ressource' du formulaire de création/modification d'un emploi du temps.
 * @author Seb
 */
public class ScheduleResource extends ParameterType {

	private static int currentId = 0 ;

	public static final String FIELD_ID = "ressources" ; //$NON-NLS-1$

	private String ressource ;
	private LayoutInflater inflater ;
	protected CreateSchedule cs ;
	protected int id ;

	/**
	 * Constructeur.
	 * @param ressource
	 * @param inflater
	 * @param cs  
	 */
	public ScheduleResource(LayoutInflater inflater, String ressource, 
			CreateSchedule cs) {
		super(FIELD_ID);
		this.ressource = ressource;
		this.inflater = inflater;
		this.cs = cs ;
		this.id = ScheduleResource.currentId++ ;
	}

	/**
	 * Retourne la chaine de caractères saisie par l'utilisateur.
	 * @param view Vue
	 * @return chaine de caractères saisie par l'utilisateur
	 */
	@Override
	public Object getValue(View view) {
		EditText ress = (EditText) view.findViewById(R.id.refSchedule) ;
		return ress.getText().toString() ;
	}

	/**
	 * Retourne la vue du champ 'Ressource', ainsi qu'un bouton pour supprimer la vue (champ texte + bouton) du formulaire.
	 * @param convertView vue du champ dans le formulaire de création/modification
	 * @param parent Vue parente
	 * @return vue du champ 'Ressource'
	 */
	@Override
	public View getView(View convertView, ViewGroup parent) {
		View v = this.inflater.inflate(R.layout.schedule_reference, null) ;
		ImageView minusIcon = (ImageView) v.findViewById(
				R.id.remove_ressource) ;
		minusIcon.setOnClickListener(
				new RemoveRessourceListener(this.cs, v, this.id)) ;
		EditText ress = (EditText) v.findViewById(R.id.refSchedule) ;
		ress.setText(this.ressource) ;
		Button choice = (Button) v.findViewById(R.id.choiceRef) ;
		choice.setEnabled(false) ;
		return v ;
	}

	/**
	 * Retourne l'id du champ.
	 * @return id du champ
	 */
	public int getRessourceId() {
		return this.id;
	}

	class RemoveRessourceListener implements OnClickListener {	

		protected CreateSchedule cs ;
		protected View parent ;
		protected int id ;

		public RemoveRessourceListener(CreateSchedule cs, View parent, int id) {
			super();
			this.cs = cs;
			this.parent = parent ;
			this.id = id ;
		}


		@Override
		public void onClick(View v) {
			this.cs.removeResource(this.parent, this.id) ;
		}
	}

}
